// 1.安装mongoose
// 2.导入mongoose
const mongoose = require("mongoose");

// 3.连接 mongodb 数据库
mongoose.connect("mongodb://127.0.0.1:27017/bilibili");

// 4.设置回调
// 设置连接成功的回调 once：事件回调函数只执行一次
mongoose.connection.once("open", () => {
  console.log("连接成功");
  // 5.创建文档的结构对象 Schema:结构
  // 设置集合中文档的属性和属性值的类型
  let BookSchema = new mongoose.Schema({
    name: {
      // 设置必填项
      type: String, // 字段类型
      required: true, // 该属性必须不为空
      unique:true, // 设置为独一无二的
    },
    author: {
      // 设置默认值
      type: String,
      default: "佚名",
    },
    // 类型
    style: {
      // 设置枚举值
      type: String,
      enum: ["科技", "小说", "漫画"],
    },
    price: Number,
  });
  // 6.创建模型对象  对文档操作的封装对象
  let BookModel = mongoose.model("books", BookSchema);
  // books 操作的集合名称   bookSchema 文档的结构对象
  // 7.新增文档对象
  BookModel.create({
    name: "西游记",
    author: "吴承恩",
    price: 19.9,
    style: "小说",
  })
    .then((data) => {
      console.log(data);
      // 8.关闭数据库连接 (项目运行过程中，不会添加该代码)
      mongoose.disconnect();
    })
    .catch((err) => {
      console.log(err);
      console.log("插入失败~");
    });
});
// 设置连接失败的回调
mongoose.connection.on("err", () => {
  console.log("连接失败");
});
// 设置连接关闭的回调
mongoose.connection.on("close", () => {
  console.log("连接关闭");
});
